// 预览单图
function preview1(e) {
	uni.previewImage({
		urls: [e],
	});
}

// 预览多图
function preview2(list,index) {
	uni.previewImage({
		urls: list,
		current: index
	});
	// let photoList=[]
	// return new Promise((resolve, reject) => {
	// 	list.forEach(item=>{
	// 		console.log(item.image);
	// 		photoList.push(item.image) 
	// 	})
	// 	resolve()
	// }).then(()=>{
	// 	console.log(photoList);
	// 	uni.previewImage({
	// 		urls: photoList,	
	// 		current: index
	// 	});
	// })
}

// 预览特定返回图片
function previewLB(e) {
	uni.previewImage({
		urls: [getApp().globalData.baseUrl + e.image],
	});
}

function changeBase64(url) { //本地图片转base64
　var imgSrc = url; // 图片本地路劲
　var image = new Image()
　image.src = imgSrc
　image.onload = () => {
　　var canvas = document.createElement("canvas")
　　canvas.width = image.width
　　canvas.height = image.height
　　var ctx = canvas.getContext("2d")
　　ctx.drawImage(image, 0, 0, image.width, image.height)
　　var ext = image.src.substring(image.src.lastIndexOf(".") + 1).toLowerCase()
　　var dataUrl = canvas.toDataURL("image/" + ext)
　　var base64 = JSON.parse(JSON.stringify(dataUrl)) // 这里就是转化成的编码
		console.log(base64);
　}
	console.log(image.src);
}

// 图片加前缀
function img(e) {
	// console.log(getApp().globalData.imgBaseUrl + e);
	let url = getApp().globalData.imgBaseUrl || ''
	return url + e
}

function navHeight(){  //获取元素节点高度
	let _this=this
	// 创建节点选择器
	let query=wx.createSelectorQuery()
	query.select("#navHeight").boundingClientRect()
	query.exec(function(res){
		_this.navheight=res[0].height  
	})
}


// 验证邮箱格式
function email(sEmail) {
    var reg = /^([\w+\.])+@\w+([.]\w+)+$/
    return reg.test(sEmail)
}
function changeMobile(e) {
	// 正则修改手机号
	e = e ? e.toString() : '';
	return e.replace(/^(\w{3})\w{4}(.*)$/, '$1****$2')

}

// 校验是否为空
function isNull(x) {
	for (var i = 0; i < arguments.length; i++) {
		if (!arguments[i]) {
			return false
		}
	}
	return true
}

// 校验含数字字母密码
function CheckPassWord(password) {
	var str = password;
	var reg1 = new RegExp(/^[0-9A-Za-z]+$/);
	if (!reg1.test(str)) {
		return false;
	}
	var reg = new RegExp(/[A-Za-z].*[0-9]|[0-9].*[A-Za-z]/);
	if (reg.test(str)) {
		return true;
	} else {
		return false;
	}
}

// 校验不含中文或特殊字符
function regPassword(str) {
	let myReg = new RegExp(/^[a-zA-Z0-9_]{0,}$/);
	if (!myReg.test(str)) {
		return false;
	}else {
		return true
	}
}

// 校验手机号格式
function checkPhone(phone) {
	//    /^(00)?82\-?0[71](?:\d{8,9})$/  验证韩国手机号0082-01012345678
	if (!(/^1[3456789]\d{9}$/.test(phone))) {
		uni.showToast({
			title:"手机号格式错误~",
			icon:"none"
		})
		return false
	} else {
		return true
	}
}

// 校验身份证号格式
function checkidnum(idnum) {
	if (!(/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(idnum))) {
		uni.showToast({
			title:"身份证号格式错误~",
			icon:"none"
		})
		return false
	} else {
		return true
	}
}
// 


// 隐藏银行卡 19位
function changeBank(e) {
	// console.log(e);
	e = '' + e;
	var ary = e.split('');
	ary.splice(4, 12, ' **** **** **** ');
	var num = ary.join('');
	return num;
}
/**
 * 13位时间戳转标准时间,如果10位则*1000
 * 
 * 在main.js中
	配置全局时间格式
	import formatTime from './plugins/utils/filters'
	Vue.prototype.formatTime=formatTime
	在页面中
	console.log(this.formatTime(this.time*1000,'YYYY-MM-DD hh:mm:ss'));
	
 *  filters.js
 * 对Date的扩展，将 Date 转化为指定格式的String  默认是2019-11-25 14:00:00 需要格式则后续传值
 * 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
 * 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
 * (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2019-11-25 08:09:04.423
 * (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2019-11-25 8:9:4.18
 * 使用格式,dom上 {{formatTime(time,'YYYY-MM-DD')}}
 * 在script中 this.formatTime(this.time,"hh:mm:ss")
 * 
 */
import Vue from 'vue'
Date.prototype.Format = function(fmt) {
	var o = {
		"M+": this.getMonth() + 1, //月份
		"D+": this.getDate(), //日
		"h+": this.getHours(), //小时
		"m+": this.getMinutes(), //分
		"s+": this.getSeconds(), //秒
		"q+": Math.floor((this.getMonth() + 3) / 3), //季度
		"S": this.getMilliseconds() //毫秒
	};
	if (/(Y+)/.test(fmt))
		fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
	for (var k in o)
		if (new RegExp("(" + k + ")").test(fmt))
			fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k])
				.length)));
	return fmt;
}

const formatTime = function(times, pattern) {  //时间戳转年月日
	var d = new Date(times).Format("YYYY-MM-DD hh:mm:ss");
	if (pattern) {
		d = new Date(times).Format(pattern);
	}
	return d.toLocaleString();
}

const dateToTimestamp=function(dateStr) { //年月日转时间戳
	if (!dateStr) {
			return ''
	}
	let newDataStr = dateStr.replace(/\.|\-/g, '/')
	let date = new Date(newDataStr);
	let timestamp = date.getTime();
	return timestamp
}


function num(e) {
	if (e > 9999) {
		return '9999+';
	} else {
		return e;
	}
}

// 提示框
function toast(text, icon, duration, mask, position) {
	duration = duration || 2000;
	mask = mask || false;
	position = position || false;
	icon = icon || 'none';
	// console.log(text, icon, duration, mask, position);
	uni.showToast({
		icon: icon,
		title: text,
		duration: duration,
		mask: mask,
		position: position,
	})
}
//加载中
function showLoading(text) {
	uni.showLoading({
		 title: text
	})
}
// 秒转时分秒
function changeTime(value) {
	let result = parseInt(value);
	let h = Math.floor(result / 3600) < 10 ? '0' + Math.floor(result / 3600) : Math.floor(result / 3600)
	let m = Math.floor((result / 60) % 60) < 10 ? '0' + Math.floor((result / 60) % 60) : Math.floor((result / 60) % 60);
	let s = Math.floor(result % 60) < 10 ? '0' + Math.floor(result % 60) : Math.floor(result % 60);
	// 　　result = `${h}:${m}:${s}`
	result = `${h}:${m}:${s}`;
	return result;
}
// 字符串转数组
function changeList(e) {
	// console.log('e',e);
	if (Array.isArray(e)) {
		return e
	} else if (e == null || e == '') {
		return [];
	} else if (typeof(e) == "string") {
		// console.log(e.split(','));
		return e.split(',');
	}
}
// 切割时间
function splitTime(e) {
	if (e) {
		return e.split(' ')[0];
	}
}

// 判断文件类型
function judge(e) {
	var arr = e.split('.');
	// console.log(arr);
	// console.log(arr[arr.length - 1]);
	return arr[arr.length - 1];
}

// 数组去重
// var arr = ['aa', 'bb', 'cc', 'bb']
// var brr = []
// brr = [...new Set(arr)]
// console.log(arr);
// console.log(brr);

// 数组去重
// function uniqArr(arr) {
// 	return [...new Set(arr)]
// }

// // 字符串去重
// function uniqStr(str) {
// 	var newStr = '';
// 	for (let i = 0; i < str.length; i++) {
// 		if (newStr.indexOf(str[i]) == -1) {
// 			newStr += str[i];
// 		}
// 	}
// 	return newStr;
// }

// 对象合并
// Object.assign(obj, obj1);

function ishave(e, q, success) { //原生请求
	console.log(e, q, success);
	uni.request({
		url: getApp().globalData.baseUrl + '/SrpLogic/hasRes_and_getPayMoney',
		method: "POST",
		data: {
			type: e,
			res_id: q
		},
		header: {
			'satoken': uni.getStorageSync('token'),
			'content-type': 'application/x-www-form-urlencoded'
		},
		success: (res) => {
			console.log(res);
			if (res.data.code == 200) {
				success(res.data.data)
			}
		}
	})
}

// 选择地址
function chLocation(myCurLocation) {
	return new Promise((resolve, reject) => {
		uni.chooseLocation({
			success: res => {
				console.log(res);
				res.addressD = res.address + res.name
				// let address = {
				// 	address: res.address,
				// 	latitude: res.latitude,
				// 	longitude: res.longitude,
				// 	name: res.name,
				// 	addressD: res.address + res.name
				// }
				resolve(res)
			}
		});
	})
}

function setData(key, data) { //存储本地缓存
	try {
		uni.setStorageSync(key, data);
	} catch (e) {
			// error
	}
}

function getData(key) { //同步获取本地缓存
	try {
		const data = uni.getStorageSync(key);
		if (data) {
			return data;
		}
	} catch (e) {
	   // error
	}
}

function validate(key, data){//判断验证是否符合要求
	let bool=true;
	if(!data[key].rule.test(this[key])){
		//提示信息
		uni.showToast({
			title:data[key].msg,
			icon:"none"
		})
		//取反
		bool=false;
		return false;
	}
	return bool;
}

function throttle(func, wait = 800, immediate = true) {// 节流
	if (immediate) {
		if (!flag) {
			flag = true;
			// 如果是立即执行，则在wait毫秒内开始时执行
			typeof func === 'function' && func();
			timer = setTimeout(() => {
				flag = false;
			}, wait);
		}
	} else {
		if (!flag) {
			flag = true
			// 如果是非立即执行，则在wait毫秒内的结束处执行
			timer = setTimeout(() => {
				flag = false
				typeof func === 'function' && func();
			}, wait);
		}

	}
}
// // 生成节流函数
// function creatDebounced(callback, delay){
//     let timer
//     return function (){
//         if (timer){ return }

//         timer = setTimeout(()=>{
//             // 此处设置apply 是为了保证函数上下文不改变
//             callback.apply(this, arguments)
//             clearTimeout(timer)
//         }, delay)
//     }
// }
// // 测试
// let test = creatDebounced(function (i){
//     console.log("函数节流测试",i)
// }, 1000)
// // 此处test 即可实现节流的功能
// test("1")

export default {
	CheckPassWord, // 校验含数字字母密码
	regPassword, // 校验不含中文或特殊字符
	checkPhone, // 校验手机号格式
	checkidnum, // 校验身份证号格式
	preview1, // 查看单图
	preview2,// 查看多图
	previewLB,// 查看特定返回图片
	changeBase64, //本地图片转base64
	navHeight,// 获取节点高度
	img,
	formatTime,  //时间戳转年月日
	dateToTimestamp, //年月日转时间戳
	changeMobile,
	changeBank,
	num,
	toast, //提示
	showLoading,
	changeTime,
	changeList,
	splitTime,
	judge, // 判断媒体格式
	ishave, //原生请求
	chLocation,
	setData,//存储本地缓存
	getData,//同步获取本地缓存
	validate, //判断验证是否正确
	email, //验证邮箱格式
	throttle, //节流
}
